﻿using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using Excel;
using System.Data;
using System.IO;

namespace BT2_XuLyDuLieu
{
    public class FileControl
    {
        private void SaveTextFile(string path, DataTable data, bool[] isNumberic, bool isCSV)
        {
            StreamWriter writer = new StreamWriter(path);

            //lưu tên;
            string temp = string.Empty;

            if (isCSV)
            {
                for (int i = 0; i < data.Columns.Count; i++)
                {
                    //Định dạng chuổi trong csv
                    temp = i == 0 ? string.Format("\"{0}", data.Columns[i].ColumnName) : string.Format("{0},\"\"{1}\"\"", temp, data.Columns[i].ColumnName);
                    
                }
                temp = string.Format("{0}\"", temp);

            }
            else
                for (int i = 0; i < data.Columns.Count; i++)
                {
                    temp = i == 0? string.Format("\"{0}\"",data.Columns[i].ColumnName): string.Format("{0},\"{1}\"",temp, data.Columns[i].ColumnName);
                }

            writer.WriteLine(temp);
            // lưu từng dòng.


            for (int i = 0; i < data.Rows.Count; i++)
            {
                temp = string.Empty;
                //lấy từng ô ra
                for (int j = 0; j < data.Columns.Count; j++)
                {
                    if (isNumberic[j])
                    {
                        //đây là số

                        string value = data.Rows[i][j] == DBNull.Value ? "?" : data.Rows[i][j].ToString();
                        temp = j == 0 ? value : string.Format("{0},{1}", temp, value);
                    }
                    else
                    {
                        if (isCSV)
                        {
                            string value = data.Rows[i][j] == DBNull.Value ? "?" : data.Rows[i][j].ToString();
                            temp = j == 0 ? string.Format("\"\"{0}\"", value) : string.Format("{0},\"\"{1}\"\"", temp, value);
                        }
                        else
                        {
                            //đây là chuổi
                            string value = data.Rows[i][j] == DBNull.Value ? "?" : data.Rows[i][j].ToString();
                            temp = j == 0 ? string.Format("\"{0}\"",value) : string.Format("{0},\"{1}\"", temp, value);
                        }
                    }
                }
                
                writer.WriteLine(temp);
            }

            writer.Close();

        }

        public string SaveFile(string path, string typeOfFile, DataTable data, bool[] isNumberic)
        {
            switch (typeOfFile)
            {
                case "txt": SaveTextFile(path, data, isNumberic, false); return "OK";
                case "xls": return "Chức năng này chưa hoàn thiện"; 
                case "csv": SaveTextFile(path, data, isNumberic, true); return "OK";
                case "xlsx": return "Chức năng này chưa hoàn thêện"; 
            }

            return string.Empty;
        }
    }
}
